import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon' // svg component

// register globally
Vue.component('svg-icon', SvgIcon)

// require.context 是 webpack 的一个 API，作用：构建一个导入上下文环境
// 第一个参数：文件夹路径
// 第二个参数：是否嵌套遍历子文件夹
// 第三个参数：具体文件匹配规则（支持正则表达式）
const req = require.context('./svg', false, /\.svg$/)

// requireAll 是自定义的一个批量导入函数
// requireContext --> req --> 既是函数（可以作为导入函数使用），又是对象
// requireContext.keys() --> 获取该上下文环境中匹配的所有文件路径组成的数组
const requireAll = requireContext => requireContext.keys().map(requireContext)

// 上面这行代码，等价于 下面这一坨代码
// // 第一个版本
// const requireAll = (requireContext) => {
//   const filePaths = requireContext.keys()
//   const fn = (filePath) => {
//     return requireContext(filePath)
//   }
//   const arr = filePaths.map(fn)
//   return arr
// }
// // 第二个版本
// const requireAll = (requireContext) => {
//   const filePaths = requireContext.keys()
//   const arr = filePaths.map((filePath) => {
//     return requireContext(filePath)
//   })
//   return arr
// }
// // 第三个版本
// const requireAll = (requireContext) => {
//   const filePaths = requireContext.keys()
//   const arr = filePaths.map(filePath => requireContext(filePath))
//   return arr
// }
// // 第四个版本
// const requireAll = (requireContext) => {
//   const filePaths = requireContext.keys()
//   const arr = filePaths.map(requireContext)
//   return arr
// }
// // 第五个版本
// const requireAll = (requireContext) => {
//   const filePaths = requireContext.keys()
//   return filePaths.map(requireContext)
// }
// // 第六个版本
// const requireAll = (requireContext) => {
//   return requireContext.keys().map(requireContext)
// }
// // 第七个版本
// const requireAll = requireContext => requireContext.keys().map(requireContext)

// arr.map( 接收一个函数 )
// const requireContext = (v) => {
//   return v
// }
// arr.map(requireContext)

// 调用自定义批量导入函数
requireAll(req)
